

.ASTRO ZAP
.BY GEORGE MOSES

   1 :return ;NT=0;goto X
   2 for K=1to B;next K;return 
   3 &(17)=44;&(18)=53;&(19)=67;return 
   4 &(21)=15;&(22)=255;return 
   6 &(23)=T;&(Z)=0;&(21)=T;return 
   7 N=0;M=rnd (30);return 
   8 for A=23to Zstep -1;&(A)=0;next A;return 
  20 box 0,0,18,12,1;box 0,0,20,1,3;box 0,0,1,14,3
  21 FC=149;BC=8;C=2;CY=32;CX=-71;print #1,@(O),;if @(F)=0print #1,"00",
  22 print #1,@(F);if @(O)>4C=@(O)div J
  23 if @(P)=10@(P)=0;gosub 4;gosub 3;&(Z)=44;L=1;for A=1to 6;B=T;CY=0;CX=-26;print "BONUS BASE";&(Z)=44;gosub 2;&(Z)=89
  24 if B=T B=S;box 0,0,60,8,2;gosub 2;next A;gosub 8;@(H)=@(H)+1;@(Q)=@(Q)+1;goto 511
  25 if Lgosub 4;&(Z)=R;gosub 3;gosub U;L=L-1;gosub 8;B=X;gosub 2;if Lgoto 25
  26 N=N+1;if N=Mgoto 70
  27 if B=Vgosub 2
  30 gosub 3;gosub 4;C=ABS(C);E=rnd (4)+93;&(Z)=T;if E=94B=-40;goto 60
  31 if E=95B=64;C=-C
  32 if E=96B=40;C=-C;goto 60
  33 if E=97B=-64
  50 CY=0;for A=Bto Bdiv 6step C;&(Z)=A;CX=A;TV=E;if JX(F)if JY(F)=0XY=0;line ABS(A)mul JX(F),0,3;if PX(A,0)=0goto R
  51 next A;goto S
  60 for A=Bto Bdiv 5step C;&(Z)=A;CX=0;CY=A;TV=E;if JY(F)if JX(F)=0XY=0;line 0,ABS(A)mul JY(F),3;if PX(0,A)goto R
  61 next A;goto S
  70 B=V;gosub 3;gosub 4;&(Z)=20;&(20)=69;M=0;N=30;D=-10;E=0
  75 if M D=D+ABS(M)div (-M)mul 2
  76 if N E=E+ABS(N)div (-N)mul 2
  95 CX=M;CY=N;print "*";CX=M;CY=N;print " ";for A=1to 2;XY=0;line 0,33mul JY(F),3;XY=0;line 33mul JX(F),0,3;if PX(M,N)gosub 7;goto R
  96 next A;M=M+D;N=N+E;if N=30E=E+3
  98 if M=0if N=0goto S
  99 goto 75
 100 gosub 6;for A=2to 10step 2;BC=rnd (T);FC=BC-4;box CX-6,CY,A,A,3;next A
 101 box 0,0,W,10,2;box 0,0,12,88,2;gosub 8;@(F)=@(F)+T;if @(F)=V@(F)=0;@(P)=@(P)+1;@(O)=@(O)+1
 110 goto 20
 200 gosub 6;for A=2to W;CX=rnd (A)-Adiv 2;BC=rnd (T);FC=BC-4;CY=rnd (Adiv 2)-Adiv 4;XY=0;line rnd (W)-81,rnd (88)-45,3;TV=46;&(23)=rnd (2)+1
 201 if TR(F)=0next A
 211 L=1;@(H)=@(H)-1
 215 H=H+1;if H>G+G H=G+1
 216 clear ;for A=G+1to G+4;if @(A)=0next A;BC=0;FC=Y;CY=-8;CX=-28;print "GAME OVER";gosub 8;goto V
 220 gosub 8;next F;goto Y
 300 for A=Rto 8step -1;&(Z)=A;next A;if L=2for A=8to R;&(Z)=A;next A
 301 return 
 500 for A=0to Z;@(A)=0;next A;for A=17to 20;@(A)=2;next A;clear ;CY=0;print "input # PLAYERS",;G=KP-48;if (G<1)+(G>4)run 
 501 for A=G+1to G+G;@(A)=3;next A;H=G+1;L=2
 510 clear ;for F=1to G;O=F+8;P=F+12;Q=F+Z;gosub 7
 511 CY=40;print " PLAYER",#2,F;J=@(Q)-1;CY=-32;print " BASES";print #4,@(H),
 512 if @(H)=0goto 215
 514 goto 20
1000 CY=40;CX=36;print "SCORE";for A=1to G;CX=24;print #1,"#",A," ",@(A+8),;if @(A)=0print #1,"00",
1010 print #1,@(A);next A
1020 if TR(F)run 
1030 goto 1020
R=100;S=200;T=250;U=300;V=1000;W=160;X=500;Y=510;Z=16;run 
